home *** CD-ROM | disk | FTP | other *** search
/ Kit PC World De Ampliacion De Windows 95 / Kit PC World de ampliacion de Windows 95.iso / internet / sweeper / samples / olecon~1 / controls / webbit~1 / webbit~3.cpp < prev   
C/C++ Source or Header  |  1995-12-05  |  6KB  |  203 lines

  1. //=--------------------------------------------------------------------------=
  2. // WebBitmapPPG.Cpp
  3. //=--------------------------------------------------------------------------=
  4. // Copyright  1995  Microsoft Corporation.  All Rights Reserved.
  5. //
  6. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF 
  7. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO 
  8. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A 
  9. // PARTICULAR PURPOSE.
  10. //=--------------------------------------------------------------------------=
  11. //
  12. // property page implementations for WebBitmap control.
  13. //
  14. #include "IPServer.H"
  15.  
  16. #include "LocalObj.H"
  17. #include "WebBitmapPPG.H"
  18. #include "WebBitmapCtl.H"
  19. #include "Resource.H"
  20. #include "Util.H"
  21.  
  22.  
  23. // for ASSERT and FAIL
  24. //
  25. SZTHISFILE
  26.  
  27. //=--------------------------------------------------------------------------=
  28. // Property Page messages
  29. //=--------------------------------------------------------------------------=
  30. // in addition to regular windows messages you'll receive for a dialog box,
  31. // you'll receive the following messages in your property page implementation:
  32. //
  33. // PPM_NEWOBJECTS:
  34. //    wParam = 0;
  35. //    lParam = (LPARAM)(HRESULT *)hr
  36. //
  37. //  - in this message, you should call FirstControl() to get a pointer to a
  38. //    control, and initialize the values in the property page dialog with
  39. //    values from the control object.  put results from the operation in
  40. //    the HRESULT pointed to by LPARAM.
  41. //
  42. // PPM_APPLY:
  43. //    wParam = 0;
  44. //    lParam = (LPARAM)(HRESULT *)hr
  45. //
  46. //  - this message is sent to your dialog whenever the user clicks APPLY or OK
  47. //    in the dialog.  you should have a loop with the following code in it:
  48. //
  49. //      for (pUnk = FirstControl(&dwCookie) ; pUnk; pUnk = NextControl(&dwCookie)) {
  50. //            hr = pUnk->QueryInterface(IID_IMyCtlInterface, (void **)&pMyCtl);
  51. //            // set properties here!!!
  52. //      }
  53. //
  54. //    call PropPageException() if there is an error while setting propertites
  55. //    to show the exception set up by the property set routine.
  56. //
  57. // PPM_EDITPROPERTY:
  58. //    wParam = dispid
  59. //    lParam = (LPARAM)(HRESULT *)hr
  60. //
  61. //  - sent to your dialog when somebody wants you to set the focus to a specific
  62. //    property [typically, one will see a call to this when one returns a page
  63. //    from IPerPropertyBrowsing::MapPropertyToPage].  you can use this
  64. //    to bring up dialogs, or do whatever flaps your flagella.
  65. //
  66.  
  67.  
  68. //=--------------------------------------------------------------------------=
  69. // CWebBitmapGeneralPage::Create
  70. //=--------------------------------------------------------------------------=
  71. // global static creation function.
  72. //
  73. // Parameters:
  74. //    IUnknown *    - [in] controlling unknown
  75. //
  76. // Output:
  77. //    IUnknown *    - new prop page.
  78. //
  79. // Notes:
  80. //
  81. IUnknown *CWebBitmapGeneralPage::Create
  82. (
  83.     IUnknown *pUnkOuter
  84. )
  85. {
  86.     return (IUnknown *)new CWebBitmapGeneralPage(pUnkOuter);
  87. }
  88.  
  89. //=--------------------------------------------------------------------------=
  90. // CWebBitmapGeneralPage::CWebBitmapGeneralPage
  91. //=--------------------------------------------------------------------------=
  92. // constructor.
  93. //
  94. // Parameters:
  95. //    IUnknown *        - [in] controlling unknown.
  96. //
  97. // Notes:
  98. //
  99. CWebBitmapGeneralPage::CWebBitmapGeneralPage
  100. (
  101.     IUnknown *pUnkOuter
  102. )
  103. : CPropertyPage(pUnkOuter, OBJECT_TYPE_PPGWEBBITMAPGENERAL)
  104. {
  105.     // initialize local variables here.
  106. }
  107.  
  108. //=--------------------------------------------------------------------------=
  109. // CWebBitmapGeneralPage::~CWebBitmapGeneralPage
  110. //=--------------------------------------------------------------------------=
  111. // destructor.
  112. //
  113. // Notes:
  114. //
  115. CWebBitmapGeneralPage::~CWebBitmapGeneralPage()
  116. {
  117.     // clean up
  118. }
  119.  
  120. //=--------------------------------------------------------------------------=
  121. // CWebBitmapGeneralPage::DialogProc
  122. //=--------------------------------------------------------------------------=
  123. // our dialog proc.
  124. //
  125. // Parameters:
  126. //    - see win32sdk docs on DialogProc
  127. //
  128. // Notes:
  129. //
  130. BOOL CWebBitmapGeneralPage::DialogProc
  131. (
  132.     HWND   hwnd,
  133.     UINT   msg,
  134.     WPARAM wParam,
  135.     LPARAM lParam
  136. )
  137. {
  138.     HRESULT     hr;
  139.     IWebBitmap *pWebBitmap;
  140.     IUnknown   *pUnk;
  141.     DWORD       dwDummy;
  142.     VARIANT    var;
  143.  
  144.     switch (msg) {
  145.  
  146.       // we've been given some new objects, so go and re-set up the dialog page.
  147.       //
  148.       case PPM_NEWOBJECTS:
  149.         {
  150.  
  151.         pUnk = FirstControl(&dwDummy);
  152.         if (!pUnk) return FALSE;
  153.  
  154.         hr = pUnk->QueryInterface(IID_IWebBitmap, (void **)&pWebBitmap);
  155.         if (FAILED(hr)) return FALSE;
  156.  
  157.     VariantInit(&var);
  158.         pWebBitmap->get_Bitmap(&var);
  159.     if( var.vt == VT_BSTR )
  160.     {
  161.           MAKE_ANSIPTR_FROMWIDE(psz, var.bstrVal);
  162.           SetDlgItemText(hwnd, IDC_URL, psz);
  163.           SysFreeString(var.bstrVal);
  164.     }
  165.         pWebBitmap->Release();
  166.         }
  167.         return TRUE;
  168.  
  169.       case PPM_APPLY:
  170.         {
  171.         char      szTmp[120];
  172.  
  173.         // get all the controls we have to update.
  174.         //
  175.         for (pUnk = FirstControl(&dwDummy) ; pUnk; pUnk = NextControl(&dwDummy)) 
  176.     {
  177.             hr = pUnk->QueryInterface(IID_IWebBitmap, (void **)&pWebBitmap);
  178.             if (FAILED(hr)) continue;
  179.     
  180.             GetDlgItemText(hwnd, IDC_URL, szTmp, 128);
  181.         VariantInit(&var);
  182.             var.vt = VT_BSTR;
  183.             var.bstrVal = BSTRFROMANSI(szTmp);
  184.             ASSERT(var.bstrVal, "Maggots!");
  185.             pWebBitmap->put_Bitmap(var);
  186.             SysFreeString(var.bstrVal);
  187.             pWebBitmap->Release();
  188.         }
  189.         }
  190.         return TRUE;
  191.  
  192.       case WM_COMMAND:
  193.         switch (LOWORD(wParam)) {
  194.           case IDC_URL:
  195.             if (HIWORD(wParam) == EN_CHANGE)
  196.                 MakeDirty();
  197.         }
  198.         break;
  199.     }
  200.  
  201.     return(FALSE);
  202. }
  203.